<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- 引入Vue -->
  <script src="../js/vue.js"></script>
  <title>4.天气案例深度监视属性简写.html</title>
</head>

<body>
  <!-- 创建一个容器 -->
  <div id="root">
    <!-- 三元表达式 -->
    <!-- <h2>今天天气很{{isHot ? '炎热' : '凉爽'}}</h2> -->
    <h2>今天天气很{{weather}}</h2>
    <button @click="changeWeather">点我切换</button>
    <!-- 绑定事件的时候:@click="yyy" yyy可以写一些简单的语句 -->
    <!-- <button @click="isHot = !isHot">点我切换</button> -->
  </div>

  <!-- 创建一个Vue实例 -->
  <script>
    Vue.config.productionTip = false

    const vm = new Vue({
      el: '#root',
      data() {
        return {
          isHot: true,
        }
      },
      computed: {
        weather() {
          return this.isHot ? '炎热' : '凉爽';
        }
      },
      methods: {
        changeWeather() {
          // 取反
          this.isHot = !this.isHot;
        }
      },
      watch: {
        // 监听data里面属性
        // isHot: {
        //   // immediate: true,//初始化时让handler调用一下
        //   // deep:true,//深度监视(多层结构)
        //   // handler什么时候调用?当weather发生变化时
        //   handler(newValue, oldValue) {
        //     console.log('isHot被修改了', newValue, oldValue)
        //   }
        // }
        // 只需要handler时可以简写
        // isHot:function(newValue,oldValue){
        //   console.log('isHot被修改了'+newValue,oldValue)
        // }
        // 最简写
        isHot(newValue,oldValue){
          console.log('isHot被修改了'+newValue,oldValue)
        }
      }
    })
    // 完整写法
    // vm.$watch('isHot',{
    //   immediate:true,
    //   deep:true,
    //   handler(newValue,oldValue){
    //     console.log('isHot被修改了'+newValue,oldValue)
    //   }
    // })
    // 简写
    // vm.$watch('isHot',function(newValue,oldValue){
    //   console.log('isHot被修改了'+newValue,oldValue)
    // })
  </script>
</body>

</html>